package com.tabnet.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.tabnet.beans.personnes.Fournisseur;
import com.tabnet.dao.DAOException;
import com.tabnet.dao.DAOFactory;
import com.tabnet.dao.DAOFournisseur;
import com.tabnet.dao.FournisseurDAOImpl;
import com.tabnet.form.ModificationFournisseurForm;

public class ModificationFournisseur extends HttpServlet {

	public static final String CONF_DAO_FACTORY 	= "DAOFactory";
    public static final String ATT_USER        	 	= "fournisseur";
    public static final String ATT_FORM         	= "form";
    public static final String ATT_SESSION_USER 	= "sessionFournisseur";

    public static final String VUE_SUCCES      		= "/adminFourn/accueil.jsp";
    public static final String VUE_FORM        		= "/adminFourn/modifDonnees.jsp";
    
    private DAOFournisseur fournDao;

    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        /* À la réception d'une requête GET, affichage du formulaire avec les infos du fournisseur */
    	HttpSession session = request.getSession();
    	request.setAttribute( ATT_USER, (Fournisseur) session.getAttribute(ATT_SESSION_USER));
        this.getServletContext().getRequestDispatcher( VUE_FORM ).forward( request, response );
    }

    public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
    	try {
			this.fournDao = new FournisseurDAOImpl( DAOFactory.getInstance() );
		} catch (DAOException e1) {
			e1.printStackTrace();
		}
        /* Récupération du fournisseur dans la session */
        HttpSession session = request.getSession();
        
    	ModificationFournisseurForm form = new ModificationFournisseurForm(fournDao);    	
        Fournisseur fourn = form.modifierFournisseur( request, (Fournisseur) session.getAttribute(ATT_SESSION_USER) );
        
        /* Ajout du bean et de l'objet métier à l'objet requête */
        request.setAttribute( ATT_FORM, form );
        request.setAttribute( ATT_USER, fourn );

        /* Si aucune erreur */
        if ( form.getErreurs().isEmpty() ) {            
            /* Et enfin (ré)enregistrement du fournisseur en session */
            session.setAttribute( ATT_SESSION_USER, fourn );

            /* Affichage de l'accueil */
            response.sendRedirect( request.getContextPath() + VUE_SUCCES );
        } else {
            /* Sinon, ré-affichage du formulaire de modification avec les erreurs */
            this.getServletContext().getRequestDispatcher( VUE_FORM ).forward( request, response );
        }
    }
}
